5 research outputs found

    Java Method Calls in the Hierarchy � Uncovering Yet another Inheritance Foible

    Full text link

    Java Method Calls in the Hierarchy – Uncovering Yet another Inheritance Foible

    Get PDF
    This paper describes an empirical investigation into method calls between classes at each level of the inheritance hierarchy in four, Java, open source systems. We distinguish between method calls made to super classes in the hierarchy and external method calls made outside the line of super classes to the root. The premise on which the research rests is that classes should predominantly make use of super class functionality (as theory suggests) and relatively infrequent use of functionality outside those super classes. Results revealed that the most method calls were made to the methods of the classes where the majority of functionality resided (at shallow hierarchical levels) and not necessarily to the super classes of a class. The evidence presented therefore implies that developers are not using inheritance in the spirit originally intended and lends weight to the growing belief that OO inheritance has more practical foibles than theoretically stated advantages.   </p

    System Evolution at the Attribute Level: an Empirical Study of Three Java OSS and their Refactorings

    Get PDF
    In this paper, we focus on the net changes in attributes across versions of OSS and use net class change data (class additions and deletions) as well as refactoring data from a previous study to inform our understanding of how those three systems evolved as they did.  While the majority of new attributes were added at levels 1 and 2 of the inheritance, these patterns were not consistent. The research question addresses the evolutionary relationship between classes and attributes as well as the connection between those changes and refactorings. Although some evidence of attributes following patterns conformant with class additions was found, we also identified occurrences of attributes being added unilaterally. A strong correspondence was also found between attribute addition and the refactoring data. Finally, we explore features of a fourth system with seven inheritance levels for similar characteristics.</p

    An empirical investigation of inheritance trends in Java OSS evolution

    Get PDF
    Inheritance is a salient feature of Object-Oriented (OO) paradigm which facilitates reuse and improves system comprehensibility in OO systems. The overall aim of inheritance is to model classes in a structured hierarchy where classes residing lower in the hierarchy (subclasses) can inherit the pre-existing functionality in the classes located higher up (superclasses) in the same line of hierarchy. Software maintenance and evolution are the process of making any modifications to a software system and upgrading its dynamic behaviour. In this Thesis, we empirically investigate the trends of evolution of eight Java Open-Source Systems (OSS) from an inheritance perspective and model the propensity for changes of inheritance in those systems. The systems used as testbed in this Thesis represent a variety of application domains with varying sizes and amount of inheritance employed. There are several levels of granularity for inheritance evolution that may manifest a particular trend. This starts from the highest level (package) to lower class, method an attribute levels; and each level may show a different and yet an important pattern of evolution. We empirically investigate the changes of inheritance in the form of increases (additions) and decreases (deletions) in number of classes, methods and attributes. Our analysis also includes the movement of classes within and across an inheritance hierarchy which is another compelling facet of evolution of inheritance and may not be extrapolated through incremental changes only. It requires a finer-grained scrutiny of evolutionary traits of inheritance. In addition, the Thesis also explores the trends of class interaction within and across an inheritance hierarchy and problems embedded in a system that may lead to faults, from an inheritance perspective. The results demonstrate how inheritance is used in practice, problems associated with inheritance and how inheritance hierarchies evolve as opposed to that of a ‘system’. Overall results informed our understanding of the trends in changes of inheritance in the evolution of Java systems.EThOS - Electronic Theses Online ServiceGBUnited Kingdo
    corecore